package uskg.kotoriforest.enumtest;

//interface info {
//    void show();
//}
//
//public enum Season implements info {
//    // public static final Season SPRING = new Season("春天", "春暖花开");
//    SPRING("春天", "春暖花开") {
//        @Override
//        public void show() {
//            System.out.println("生机勃勃，万物竞发。又到了动物交配的季节了！");
//        }
//    },
//    SUMMER("夏天", "汗流浃背"),
//    AUTUMN("秋天", "秋高气爽"),
//    WINTER("冬天", "不如睡觉");
//
//    private final String NAME;
//    private final String DESCRIPTION;
//
//    Season(String name, String description) {
//        this.NAME = name;
//        this.DESCRIPTION = description;
//    }
//
//    public String getNAME() {
//        return NAME;
//    }
//
//    public String getDESCRIPTION() {
//        return DESCRIPTION;
//    }
//
//    @Override
//    public void show() {
//        System.out.println("这是一个普通的季节");
//    }

//    @Override
//    public String toString() {
//        return "Season{" +
//                "NAME='" + NAME + '\'' +
//                ", DESCRIPTION='" + DESCRIPTION + '\'' +
//                '}';
//    }


//}

//class Test {
//    public static void main(String[] args) {
////        Season season = Season.SUMMER;
////        System.out.println(season);
////        System.out.println(season.name());
////        System.out.println(season.getNAME());
////        System.out.println(season.getDESCRIPTION());
//
////        for (Season value : Season.values()) {
////            System.out.println(value.name() + " " + value.getDESCRIPTION());
////        }
////
////        System.out.println(Season.AUTUMN.ordinal());
//
//        for (Season season : Season.values()) {
//            season.show();
//        }
//    }
//}

//class Person {
//    private String name;
//    private Status status;
//
//    public Person(String name, Status status) {
//        this.name = name;
//        this.status = status;
//    }
//
//    public enum Status {
//        ALIVE("活着"),
//        DEATH("已经寄了");
//        private final String DESCRIPTION;
//        Status(String description) {
//            this.DESCRIPTION = description;
//        }
//
//        public String getDESCRIPTION() {
//            return DESCRIPTION;
//        }
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public Status getStatus() {
//        return status;
//    }
//
//    @Override
//    public String toString() {
//        return String.format("%s is %s", name, status.DESCRIPTION);
//    }
//
//    public Person() {
//    }
//}
//
//class Test {
//    public static void main(String[] args) {
//        Person p1 = new Person("李华", Person.Status.ALIVE);
//        Person p2 = new Person("小美", Person.Status.DEATH);
//
//        System.out.println(p1);
//        System.out.println(p2);
//    }
//}

//public class Season {
//    private final String SEASON_NAME; //季节的名称
//    private final String SEASON_DESC; //季节的描述
//
//    private Season(String seasonName, String seasonDesc) {
//        this.SEASON_NAME = seasonName;
//        this.SEASON_DESC = seasonDesc;
//    }
//
//    // Season 的实例 都是静态的 可以通过类名获得
//    // 实例都是 final 的 防止被用户在外部改变 如：Season.SPRING = null;
//    public static final Season SPRING = new Season("春天", "春暖花开");
//    public static final Season SUMMER = new Season("夏天", "夏日炎炎");
//    public static final Season AUTUMN = new Season("秋天", "秋高气爽");
//    public static final Season WINTER = new Season("冬天", "白雪皑皑");
//
//    @Override
//    public String toString() {
//        return "Season{" +
//                "SEASON_NAME='" + SEASON_NAME + '\'' +
//                ", SEASON_DESC='" + SEASON_DESC + '\'' +
//                '}';
//    }
//}
//
//class SeasonTest {
//    public static void main(String[] args) {
//        System.out.println(Season.SPRING);
//        System.out.println(Season.SUMMER);
//        System.out.println(Season.AUTUMN);
//        System.out.println(Season.WINTER);
//    }
//}

//public enum Season {
//    // 定义枚举实例必须这么写 不能添加额外的东西 public static final 也不行！
//    SPRING("春暖花开"),
//    SUMMER("夏日炎炎"),
//    AUTUMN("秋高气爽"),
//    WINTER("白雪皑皑");
//
//    private final String SEASON_DESC; //季节的描述
//
//    // 这里的 private 可以省略
//    private Season(String seasonDesc) {
//        this.SEASON_DESC = seasonDesc;
//    }
//}

//interface Info {
//    void show();
//}
//
////使用 enum 关键字定义枚举类
//public enum Season implements Info {
//    // 创建枚举类中的对象,声明在 enum 枚举类的首位
//    SPRING("春天", "春暖花开") {
//        public void show() {
//            System.out.println("春天在哪里？");
//        }
//    },
//    SUMMER("夏天", "夏日炎炎") {
//        public void show() {
//            System.out.println("宁静的夏天");
//        }
//    },
//    AUTUMN("秋天", "秋高气爽"),
//    WINTER("冬天", "白雪皑皑") {
//        public void show() {
//            System.out.println("2002 年的第一场雪");
//        }
//    };
//
//    // 声明每个对象拥有的属性 用 private final 修饰
//    private final String SEASON_NAME;
//    private final String SEASON_DESC;
//
//    // 私有化类的构造器
//    private Season(String seasonName, String seasonDesc) {
//        this.SEASON_NAME = seasonName;
//        this.SEASON_DESC = seasonDesc;
//    }
//
//    public String getSEASON_NAME() {
//        return SEASON_NAME;
//    }
//
//    public String getSEASON_DESC() {
//        return SEASON_DESC;
//    }
//
//
//    // 为枚举类实现抽象方法
//    // 如果每个枚举对象都实现了独属于自己的抽象方法 就可以不为抽象类实现 否则就要实现 这里 AUTUMN 没有实现自己的抽象方法
//    // 所以 AUTUMN 就会调用枚举类实现的方法 即这个方法
//    @Override
//    public void show() {
//        System.out.println("这是一个平凡的季节");
//    }
//}
//
//class SeasonTest {
//    public static void main(String[] args) {
//        for (Season season : Season.values()) {
//            season.show();
//        }
//    }
//}

//public class Season {
////    @Target()
//}